from dotenv import load_dotenv
import os
from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base, sessionmaker

# 加载 .env 文件中的环境变量
load_dotenv()

# 获取数据库连接字符串
DATABASE_URL = os.getenv("DATABASE_URL")

# 创建引擎，并配置连接池
# 这里设置了 pool_size=5, max_overflow=10, pool_recycle=3600
engine = create_engine(
    DATABASE_URL,
    pool_size=5,            # 连接池大小
    max_overflow=10,        # 超出连接池大小后允许的最大连接数
    pool_recycle=3600       # 回收连接的秒数
)

# 创建会话制造商
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

# 定义基类
Base = declarative_base()

# 依赖项：获取数据库会话
def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

# 创建所有表
def create_tables():
    Base.metadata.create_all(bind=engine)